package oas.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import oas.web.WebConfig;

/**
 * 初始化配置，相当于一个程序的入口类，在整个WEB启动时加载
 *
 * @author liyue
 * @version v1.0.0
 */
public class OASWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

	/**
	 * 在 Spring web 程序中，还有另外一个应用程序上下文，它是由 ContextLoaderListener 产生的。通过调用
	 * getRootConfigClasses()方法返回的类就是用来配置 ContextLoaderListener 产生的上下文。
	 * ContextLoaderListener 用来载入程序中其余的 beans，例如一些中间层和数据层组件，完成的是程序后端功能。
	 *
	 */
	@Override
	protected Class<?>[] getRootConfigClasses() {
		return new Class<?>[] { RootConfig.class };
	}

	/**
	 * DispatcherServlet 开始启动时，会产生一个 Spring 应用程序上下文，把它和配置文件中声明的 bean
	 * 或者类一起加载进来。通过getServletConfigClasses() 方法，设置 DispatcherServlet 通过
	 * WebConfig 配置类来完成 Spring 上下文和 bean 的加载。 DispatcherServlet 是用来加载涉及 web 功能的
	 * beans，例如 controllers， view， resolvers， 和 handler mappings；
	 *
	 */
	@Override
	protected Class<?>[] getServletConfigClasses() {
		return new Class<?>[] { WebConfig.class };
	}

	/**
	 * 为 DispatcherServlet 提供一个或更多的Servlet 映射；这里是被映射到 /， 指示它为默认的
	 * servlet，用来操作所有来到程序的 Request
	 *
	 */
	@Override
	protected String[] getServletMappings() {
		return new String[] { "/" };
	}

//	@Override
//	public void onStartup(ServletContext servletContext) throws ServletException {
//		super.onStartup(servletContext);
//	}

}